\section{Brève description des logiciels étudiés}
 Le résultat de l'exécution de FLEX est écrit dans un fichie nommé "lexer.c". Ce fichier est le paramètre d'entrée de BISON. Il contient du code décrivant l'analyseur lexical associé au fichier "lexer.y", c'est-à-dire le fichier d'entrée de FLEX. Le fichier "lexer.c" est constitué d'une grande partie de code générique, ainsi que du codage d'un automate de façon propre à être lue par BISON.
\\
\\
\section{Description d'un automate}
 Un automate est une structure, composée d'un ensemble d'états et de transitions entre ces états. Elle permet de reconnaître les mots d'un langage, et selon la façon dont elle est définie, de reconnaître de façon différente les mots qui n'appartiennent pas à ce langage. Dans le cadre de la génération d'analyseurs lexicaux, FLEX utilise un automate afin de pouvoir reconnaître dans le fichier à analyser les occurences des expressions régulières et de pouvoir déclencher la règle qui leur est associée. La reconnaissance d'une expression régulière se fait par l'entrée de l'automate dans un état dit final. Le programme devra donc comporter un module de construction et de paramétrages d'automates.
\\
\\
Dans ce contexte, l'automate généré par FLEX à partir du fichier "lexer.l" permettra de lire les caractères du fichier à parcourir afin de déterminer si un groupe de caractères consécutifs correspond à une expression régulière. Une transition entre états devra donc lister les caractères qui permettent de passer d'un état de l'automate à un autre.
\\
\\
Un état peut se représenter par un ensemble de transitions vers d'autres états, c'est-à-dire un ensemble de paires (etat,transition). Il faut aussi pouvoir marquer pour chaque état si il est final, initial ou les deux.
\\
\\
Un automate se décompose donc comme suit :
\begin{itemize}
\item
      Un ensemble d'états
\item
      Un état initial appartenant à l'ensemble des états
\item
      Un ensemble d'états finaux, sous-ensemble de l'ensemble des états
\item
      Un alphabet, listant les caractères pour lesquels il existe une transition d'un état à son successeur dans l'automate.
\end{itemize}

Pour être fonctionnel, un automate doit être déterministe, c'est-à-dire que quelle que soit une suite de caractères donnés C, on ne puisse effectuer qu'un seul chemin à travers les états de l'automate pour C, et qu'on doive lire un et un seul caractère pour passer d'un état à un autre.
\\
\\
Si C=c1,c2,...,cn, alors

\begin{center}
\resizebox{.8\linewidth}{!}{\includegraphics{chemin_automate.png}}\\
\end{center}